Tvoreni objektu v runtime podle zaznamu v ini souboru

Otázka od: Michal Kuncl

19. 12. 2002 19:05

 Zdravim,
 potreboval bych poradit, jakym zpusobem by se dali vytvaret objekty
 (komponenty) za behu podle zaznamu napr. v ini souboru.
 
 dik
 Spider_X

Odpovedá: Ján Harman

19. 12. 2002 19:35

Napriklad:
TButton.Create(self);
TButton.Parent := Panel1;
TButton.Left := IniFile.ReadInteger('Button', 'Leva', 10);
TButton.Top := IniFile.ReadInteger('Button', 'Horni', 20);...atd.
Ján Harman, Brno, harman@volny.cz

> Zdravim,
> potreboval bych poradit, jakym zpusobem by se dali vytvaret objekty
> (komponenty) za behu podle zaznamu napr. v ini souboru.
>
> dik
> Spider_X
>
>

Odpovedá: Ján Harman

20. 12. 2002 1:06

Mala oprava:
Tlac := TButton.Create(self);
Tlac.Parent := Panel1;
Tlac.Left := IniFile.ReadInteger('Button', 'Leva', 10);
Tlac.Top := IniFile.ReadInteger('Button', 'Horni', 20);
Tlac.Caption := IniFile.ReadString('Button', 'Label', 'Otevrit');...atd.
Ján Harman, Brno, harman@volny.cz

> Napriklad:
> TButton.Create(self);
> TButton.Parent := Panel1;
> TButton.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> TButton.Top := IniFile.ReadInteger('Button', 'Horni', 20);...atd.
> Ján Harman, Brno, harman@volny.cz
>
> > Zdravim,
> > potreboval bych poradit, jakym zpusobem by se dali vytvaret objekty
> > (komponenty) za behu podle zaznamu napr. v ini souboru.
> >
> > dik
> > Spider_X
> >
> >
>
>

Odpovedá: Michal Kuncl

20. 12. 2002 10:04

Diky, ale potreboval bych, aby soucasti tech ini zaznamu bylo i jmeno tridy
a podle toho by se az vytvarel objekt.

Spider

----- Original Message -----
From: "Ján Harman" <harman@volny.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, December 20, 2002 12:36 AM
Subject: Re: Tvoreni objektu v runtime podle zaznamu v ini souboru


> Mala oprava:
> Tlac := TButton.Create(self);
> Tlac.Parent := Panel1;
> Tlac.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> Tlac.Top := IniFile.ReadInteger('Button', 'Horni', 20);
> Tlac.Caption := IniFile.ReadString('Button', 'Label', 'Otevrit');...atd.
> Ján Harman, Brno, harman@volny.cz
>
> > Napriklad:
> > TButton.Create(self);
> > TButton.Parent := Panel1;
> > TButton.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> > TButton.Top := IniFile.ReadInteger('Button', 'Horni', 20);...atd.
> > Ján Harman, Brno, harman@volny.cz
> >
> > > Zdravim,
> > > potreboval bych poradit, jakym zpusobem by se dali vytvaret objekty
> > > (komponenty) za behu podle zaznamu napr. v ini souboru.
> > >
> > > dik
> > > Spider_X
> > >
> > >
> >
> >
>

Odpovedá: Tvrz Miroslav

20. 12. 2002 10:42

Mas zajiste nejakou konkretni predstavu k cemu by to mohlo slouzit, tak se
pochlub. Ja sem delal program, ktery neco podobneho delal - dal
si's na
formular komponentu a nastavil jeji vlastnosti, pak bylo potreba nejak
ulozit a zpetne nacist - zjistil jsem si pri nacitani co to bylo za
komponentu (mel jsem vlastni) a podle toho jsem ji vytvoril a nastavil
ulozene hodnoty.
MI'RA

-----Original Message-----
From: Michal Kuncl [mailto:spider_x@quick.cz]
Sent: Friday, December 20, 2002 8:45 AM
To: delphi-l@clexpert.cz
Subject: Re: Tvoreni objektu v runtime podle zaznamu v ini souboru


Diky, ale potreboval bych, aby soucasti tech ini zaznamu bylo i jmeno tridy
a podle toho by se az vytvarel objekt.

Spider

----- Original Message -----
From: "Ján Harman" <harman@volny.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, December 20, 2002 12:36 AM
Subject: Re: Tvoreni objektu v runtime podle zaznamu v ini souboru


> Mala oprava:
> Tlac := TButton.Create(self);
> Tlac.Parent := Panel1;
> Tlac.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> Tlac.Top := IniFile.ReadInteger('Button', 'Horni', 20);
> Tlac.Caption := IniFile.ReadString('Button', 'Label', 'Otevrit');...atd.
> Ján Harman, Brno, harman@volny.cz
>
> > Napriklad:
> > TButton.Create(self);
> > TButton.Parent := Panel1;
> > TButton.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> > TButton.Top := IniFile.ReadInteger('Button', 'Horni', 20);...atd.
> > Ján Harman, Brno, harman@volny.cz
> >
> > > Zdravim,
> > > potreboval bych poradit, jakym zpusobem by se dali vytvaret objekty
> > > (komponenty) za behu podle zaznamu napr. v ini souboru.
> > >
> > > dik
> > > Spider_X
> > >
> > >
> >
> >
>

Odpovedá: Ján Harman

20. 12. 2002 11:26

V tom pripade bych pouzil Reference na tridu. Mozno by to slo i jednoduseji,
ale mne napadlo toto:
Uvadim maly priklad (je to vyzkousene = funguje)
Ján Harman, Brno, harman@volny.cz

procedure TForm1.FormCreate(Sender: TObject);
var RefTrida : TControlClass;
    NovyObj : TControl;
    i : Integer;
    PocetObj : Integer;
    section, obj : String;
begin
  With TIniFile.Create ('f:\Objekty.ini') do begin
      PocetObj := ReadInteger('Main', 'Pocet', 0);
      if PocetObj = 0 then Exit;
      for i := 1 to PocetObj do begin
          section := 'Object'+IntToStr(i);
          obj := ReadString (section, 'Trida', ''); // nejlepe si tridy
znacit nejakym jednim pismenkem, nebo nejak jinak jednoznacne
          if obj = '' then Exit;
          Case obj[1] of
          'B' : RefTrida := TButton;
          'R' : RefTrida := TRadioButton;
          'P' : RefTrida := TPanel;
          end;

          NovyObj := RefTrida.Create(self);
          NovyObj.Visible := false;
          NovyObj.Parent := self;
          NovyObj.Left := ReadInteger(section, 'Left', 10);
          NovyObj.Top := ReadInteger(section, 'Top', 20);
          //.... tady si muzes nasekat jake vlastnosti chces, jenom co je
vlastni TControl;
          // ostatni vlastnosti opet pomoci Case...
          NovyObj.Name := 'Object'+IntToStr(i); // musi byt jedinecne
          NovyObj.Visible := true;
      end;
      Free;
  end;
end;


> Diky, ale potreboval bych, aby soucasti tech ini zaznamu bylo i jmeno
tridy
> a podle toho by se az vytvarel objekt.
>
> Spider
>
> > Mala oprava:
> > Tlac := TButton.Create(self);
> > Tlac.Parent := Panel1;
> > Tlac.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> > Tlac.Top := IniFile.ReadInteger('Button', 'Horni', 20);
> > Tlac.Caption := IniFile.ReadString('Button', 'Label', 'Otevrit');...atd.
> > Ján Harman, Brno, harman@volny.cz
> >
> > > Napriklad:
> > > TButton.Create(self);
> > > TButton.Parent := Panel1;
> > > TButton.Left := IniFile.ReadInteger('Button', 'Leva', 10);
> > > TButton.Top := IniFile.ReadInteger('Button', 'Horni', 20);...atd.
> > > Ján Harman, Brno, harman@volny.cz
> > >
> > > > Zdravim,
> > > > potreboval bych poradit, jakym zpusobem by se dali vytvaret objekty
> > > > (komponenty) za behu podle zaznamu napr. v ini souboru.
> > > >
> > > > dik
> > > > Spider_X
> > > >
> > > >
> > >
> > >
> >
>
>